using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using BusinessRules;
using DataAccess;
using MinCultura.Sinic.Basicas;
using Common;

using MinCultura.Sipa.EntidadesArtes; 
using MinCultura.Sipa.DataAccess.EntidadesArtes;
using UsrControls;

using CompareValidator = Anthem.CompareValidator;
using CustomValidator = Anthem.CustomValidator;
using Label = Anthem.Label;
using RadioButtonList = Anthem.RadioButtonList;
using RegularExpressionValidator = Anthem.RegularExpressionValidator;
using RequiredFieldValidator = Anthem.RequiredFieldValidator;
using TextBox = Anthem.TextBox;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class EntidadesUbicacion : SinicUserControl
	{
		protected UsrControls.TextBoxBase txtENT_CIUDAD;
		protected UsrControls.TextBoxBase txtENT_DIRECCION;
		protected UsrControls.TextBoxBase txtENT_DIRECCION_CORRESPONDENCIA;
		protected UsrControls.TextBoxBase txtENT_TELEFONO;
		protected UsrControls.TextBoxBase txtENT_FAX;
		protected UsrControls.TextBoxBase txtENT_APARTADO_AEREO;
		protected UsrControls.TextBoxBase txtENT_CORREO_ELECTRONICO_ENTIDAD;
		protected UsrControls.TextBoxBase txtENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD;
		protected RadioButtonList opcAREA;
		protected RadioButtonList opcTIENE_FAX_ENTIDAD;
		protected RadioButtonList opcTIENE_CORREO_ELECTRONICO_ENTIDAD;
		protected DropDownBase dpl_PAIS_ENTIDAD;
        protected web.Controls.ZonasGeograficas dplMUNICIPIO;
		protected RadioButtonList opcTIENE_TELEFONO_ENTIDAD;
		protected Label lblENT_TELEFONO;
		protected Label lblENT_FAX;
		protected Label lblENT_CORREO_ELECTRONICO_ENTIDAD;
		protected CustomValidator cvaltxtCiudad;
		protected Anthem.CustomValidator cValFax;
		protected Anthem.CustomValidator cValConfirmMail;
		protected Anthem.CustomValidator cValMail;
		protected UsrControls.TextBoxBase txtENT_PAGINA_WEB1;
		protected UsrControls.TextBoxBase txtENT_PAGINA_WEB2;
		protected UsrControls.TextBoxBase txtENT_PAGINA_WEB3;
		protected Anthem.RequiredFieldValidator reqDireccion;
		protected Anthem.CustomValidator cvalTelefono;
		protected Label lblENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{			
			if (!IsPostBack)
			{
				Manager.Register(this);

				//telefono
				StringBuilder strTelefono = new StringBuilder();
				strTelefono.Append(opcTIENE_TELEFONO_ENTIDAD.ClientID + "_0,");
				strTelefono.Append(lblENT_TELEFONO.ClientID + ",");
				strTelefono.Append(txtENT_TELEFONO.ClientID);
				opcTIENE_TELEFONO_ENTIDAD.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTelefono.ToString() + ")";

				//fax
				StringBuilder strFAX = new StringBuilder();
				strFAX.Append(opcTIENE_FAX_ENTIDAD.ClientID + "_0,");
				strFAX.Append(lblENT_FAX.ClientID + ",");
				strFAX.Append(txtENT_FAX.ClientID);
				opcTIENE_FAX_ENTIDAD.Attributes["OnClick"] = "return habilitarCamposSINO(" + strFAX.ToString() + ")";

				//correo
				StringBuilder strCORREO = new StringBuilder();
				strCORREO.Append(opcTIENE_CORREO_ELECTRONICO_ENTIDAD.ClientID + "_0,");
				strCORREO.Append(lblENT_CORREO_ELECTRONICO_ENTIDAD.ClientID + ",");
				strCORREO.Append(txtENT_CORREO_ELECTRONICO_ENTIDAD.ClientID + ",");
				strCORREO.Append(lblENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.ClientID + ",");
				strCORREO.Append(txtENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.ClientID);
				opcTIENE_CORREO_ELECTRONICO_ENTIDAD.Attributes["OnClick"] = "return habilitarCamposSINO(" + strCORREO.ToString() + ")";
			}
			MantenerEstadoVisualFormulario();
		}

		#endregion 

		#region - Metodos 		

		public EntidadUbicacionData ObtenerDatos()
		{
			EntidadUbicacionData objData = new EntidadUbicacionData();
			DataRow fila = objData.NewRow();

			fila[EntidadUbicacionData.ENT_ID_FIELD] = this.Identificador;
			fila[EntidadUbicacionData.ZOP_ID_FIELD] = dpl_PAIS_ENTIDAD.SelectedValue;

			if (dpl_PAIS_ENTIDAD.SelectedValue == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
				fila[EntidadUbicacionData.ZON_ID_FIELD] = dplMUNICIPIO.MunicipioSeleccionado;
			else
				fila[EntidadUbicacionData.ENT_CIUDAD_FIELD] = txtENT_CIUDAD.Text;

			fila[EntidadUbicacionData.ARE_ID_FIELD] = opcAREA.SelectedValue;

			fila[EntidadUbicacionData.ENT_DIRECCION_FIELD] = txtENT_DIRECCION.Text;

			fila[EntidadUbicacionData.ENT_DIRECCION_CORRESPONDENCIA_FIELD] = txtENT_DIRECCION_CORRESPONDENCIA.Text;

			fila[EntidadUbicacionData.ENT_SINO_TELEFONO_FIELD] = opcTIENE_TELEFONO_ENTIDAD.SelectedValue;
			if (opcTIENE_TELEFONO_ENTIDAD.SelectedValue == Utilidad.SI)
				fila[EntidadUbicacionData.ENT_TELEFONO_FIELD] = txtENT_TELEFONO.Text;

			fila[EntidadUbicacionData.ENT_SINO_FAX_FIELD] = opcTIENE_FAX_ENTIDAD.SelectedValue;
			if (opcTIENE_FAX_ENTIDAD.SelectedValue == Utilidad.SI)
				fila[EntidadUbicacionData.ENT_FAX_FIELD] = txtENT_FAX.Text;

			fila[EntidadUbicacionData.ENT_APARTADO_AEREO_FIELD] = txtENT_APARTADO_AEREO.Text;

			fila[EntidadUbicacionData.ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_FIELD] = opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue;
			if (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI)
				fila[EntidadUbicacionData.ENT_CORREO_ELECTRONICO_ENTIDAD_FIELD] = txtENT_CORREO_ELECTRONICO_ENTIDAD.Text;

			string paginasWeb = string.Empty;

			if (txtENT_PAGINA_WEB1.Text.Trim().Length>0)
				paginasWeb += txtENT_PAGINA_WEB1.Text + "|"; 
			if (txtENT_PAGINA_WEB2.Text.Trim().Length>0)
				paginasWeb += txtENT_PAGINA_WEB2.Text + "|" ;
			if (txtENT_PAGINA_WEB3.Text.Trim().Length>0)
				paginasWeb += txtENT_PAGINA_WEB3.Text;
			 
			fila[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD] = paginasWeb; 

			fila[EntidadUbicacionData.ENT_CIUDAD_FIELD] = txtENT_CIUDAD.Text;

			objData.addEntidadUbicacion(fila);

			return objData;
		}

		public void CreaEntorno(DataRow fila)
		{
			CargarControles();				

			this.Identificador = Convert.ToDecimal(fila[EntidadUbicacionData.ENT_ID_FIELD]);

			if (fila[EntidadUbicacionData.ZOP_ID_FIELD] != DBNull.Value)
			{
				dpl_PAIS_ENTIDAD.SelectedValue = fila[EntidadUbicacionData.ZOP_ID_FIELD].ToString();					
			}

			if (dpl_PAIS_ENTIDAD.SelectedValueShort == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA)
			{
				if (fila[EntidadUbicacionData.ZON_ID_FIELD] != DBNull.Value)
				{
					dplMUNICIPIO.AsignarValores(fila[EntidadUbicacionData.ZON_ID_FIELD].ToString());
				}
				dplMUNICIPIO.Enabled = true;
				txtENT_CIUDAD.Enabled = false;
			}
			else
			{
				if (fila[EntidadUbicacionData.ENT_CIUDAD_FIELD] != DBNull.Value)
				{
					txtENT_CIUDAD.Text = fila[EntidadUbicacionData.ENT_CIUDAD_FIELD].ToString();
				}
				txtENT_CIUDAD.Enabled = true;
				dplMUNICIPIO.Enabled = false;
			}

			if (fila[EntidadUbicacionData.ARE_ID_FIELD] != DBNull.Value)
				opcAREA.SelectedValue = fila[EntidadUbicacionData.ARE_ID_FIELD].ToString();

			if (fila[EntidadUbicacionData.ENT_DIRECCION_FIELD] != DBNull.Value)
				txtENT_DIRECCION.Text = fila[EntidadUbicacionData.ENT_DIRECCION_FIELD].ToString();

			if (fila[EntidadUbicacionData.ENT_DIRECCION_CORRESPONDENCIA_FIELD] != DBNull.Value)
				txtENT_DIRECCION_CORRESPONDENCIA.Text = fila[EntidadUbicacionData.ENT_DIRECCION_CORRESPONDENCIA_FIELD].ToString();

			opcTIENE_TELEFONO_ENTIDAD.SelectedValue = fila[EntidadUbicacionData.ENT_SINO_TELEFONO_FIELD].ToString();
			if (opcTIENE_TELEFONO_ENTIDAD.SelectedValue == Utilidad.SI)
			{
				if (fila[EntidadUbicacionData.ENT_TELEFONO_FIELD] != DBNull.Value)
					txtENT_TELEFONO.Text = fila[EntidadUbicacionData.ENT_TELEFONO_FIELD].ToString();

				lblENT_TELEFONO.Enabled = true;
				txtENT_TELEFONO.Enabled = true;
			}

			opcTIENE_FAX_ENTIDAD.SelectedValue = fila[EntidadUbicacionData.ENT_SINO_FAX_FIELD].ToString();
			if (opcTIENE_FAX_ENTIDAD.SelectedValue == Utilidad.SI)
			{
				txtENT_FAX.Text = fila[EntidadUbicacionData.ENT_FAX_FIELD].ToString();
				lblENT_FAX.Enabled = true;
				txtENT_FAX.Enabled = true;
			}

			if (fila[EntidadUbicacionData.ENT_APARTADO_AEREO_FIELD] != DBNull.Value)
				txtENT_APARTADO_AEREO.Text = fila[EntidadUbicacionData.ENT_APARTADO_AEREO_FIELD].ToString();

			opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue = fila[EntidadUbicacionData.ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_FIELD].ToString();
			if (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI)
			{
				lblENT_CORREO_ELECTRONICO_ENTIDAD.Enabled = true;
				txtENT_CORREO_ELECTRONICO_ENTIDAD.Text = fila[EntidadUbicacionData.ENT_CORREO_ELECTRONICO_ENTIDAD_FIELD].ToString();
				txtENT_CORREO_ELECTRONICO_ENTIDAD.Enabled = true;
				lblENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.Enabled = true;
				txtENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.Text = fila[EntidadUbicacionData.ENT_CORREO_ELECTRONICO_ENTIDAD_FIELD].ToString();
				txtENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.Enabled = true;
			}

			if (fila[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD] != DBNull.Value)
			{
				if (fila[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD].ToString()!=string.Empty)
				{
					char[] separador = {'|'}; 
					string[] paginasWeb = fila[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD].ToString().Split(separador,3);
					if (paginasWeb.Length == 1)
					{
						txtENT_PAGINA_WEB1.Text = paginasWeb[0];
					}

					if (paginasWeb.Length == 2)
					{
						txtENT_PAGINA_WEB1.Text = paginasWeb[0];
						txtENT_PAGINA_WEB2.Text = paginasWeb[1];
					}

					if (paginasWeb.Length == 3)
					{
						txtENT_PAGINA_WEB1.Text = paginasWeb[0];
						txtENT_PAGINA_WEB2.Text = paginasWeb[1];
						txtENT_PAGINA_WEB3.Text = paginasWeb[2];
					}
				}
			}
		}

		public void CargarControles()
		{						
			dpl_PAIS_ENTIDAD.Items.Clear();
            ZonasPaises zonaPais = new ZonasPaises(ConfigurationManager.AppSettings["Conn"]);
			ZonasPaisesData zonasPaisesData = zonaPais.BuscarZonasPaises();
			if (zonasPaisesData != null)
			{
				dpl_PAIS_ENTIDAD.DataSource = zonasPaisesData;
				dpl_PAIS_ENTIDAD.DataTextField = ZonasPaisesData.ZOP_NOMBRE_FIELD;
				dpl_PAIS_ENTIDAD.DataValueField = ZonasPaisesData.ZOP_ID_FIELD;
				dpl_PAIS_ENTIDAD.DataBind();

				ListItem liPais = dpl_PAIS_ENTIDAD.Items.FindByValue(Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString());
				if (liPais != null)
				{
					liPais.Selected = true;
					txtENT_CIUDAD.Enabled = false;
				}
			}

			opcAREA.Items.Clear();
            EntidadUbicacion objBR = new EntidadUbicacion(ConfigurationManager.AppSettings["conn"]);
			DataTable objData = objBR.BuscarAreas();
			if (objData != null)
			{
				opcAREA.DataSource = objData;
				opcAREA.DataTextField = "ARE_NOMBRE";
				opcAREA.DataValueField = "ARE_ID";
				opcAREA.DataBind();

				opcAREA.Items[0].Selected = true;
			}
		}

		private void MantenerEstadoVisualFormulario()
		{
			dplMUNICIPIO.Enabled = (dpl_PAIS_ENTIDAD.SelectedValueShort == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA);
			txtENT_CIUDAD.Enabled = !(dpl_PAIS_ENTIDAD.SelectedValueShort == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA);
	
			lblENT_TELEFONO.Enabled = (opcTIENE_TELEFONO_ENTIDAD.SelectedValue == Utilidad.SI);
			txtENT_TELEFONO.Enabled = (opcTIENE_TELEFONO_ENTIDAD.SelectedValue == Utilidad.SI);

			lblENT_FAX.Enabled = (opcTIENE_FAX_ENTIDAD.SelectedValue == Utilidad.SI);
			txtENT_FAX.Enabled = (opcTIENE_FAX_ENTIDAD.SelectedValue == Utilidad.SI);
			
			lblENT_CORREO_ELECTRONICO_ENTIDAD.Enabled = (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI);
			txtENT_CORREO_ELECTRONICO_ENTIDAD.Enabled = (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI);
			lblENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.Enabled = (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI);
			txtENT_CONFIRMAR_CORREO_ELECTRONICO_ENTIDAD.Enabled = (opcTIENE_CORREO_ELECTRONICO_ENTIDAD.SelectedValue == Utilidad.SI);
		}
		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public EntidadUbicacionData EntidadUbicacionDataTable
		{
			get
			{
				EntidadUbicacionData dtEntidadUbicacionData = null;

				if (Cache[EntidadUbicacionData.ART_ENTIDAD_UBICACION_TABLE+ Session.SessionID] != null)
				{
					dtEntidadUbicacionData =
						(EntidadUbicacionData) Cache[EntidadUbicacionData.ART_ENTIDAD_UBICACION_TABLE + Session.SessionID];
				}

				return dtEntidadUbicacionData;
			}
		}

		public EntidadUbicacionData UbicacionData
		{
			get 
			{
				return ObtenerDatos();
			}
			set
			{
				if (value != null && value.Rows.Count > 0)
				{
					CreaEntorno(value.Rows[0]);	
				}
			}
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion
	}
}